/*
什么是 panic？
什么时候应该使用 panic？
panic 示例
发生 panic 时的 defer
recover
panic，recover 和 Go 协程
运行时 panic
恢复后获得堆栈跟踪
 */

package main

import (
	"fmt"
)

func r(){
	if i := recover(); i != nil {
		fmt.Println("recovered ", i)
		//debug.PrintStack()
	}
}

func a(){
	defer r()
	arr := []int{1,2,5}
	fmt.Println("__arr", arr[3])
}

func main(){
	a()
	fmt.Println("main is end")
}